# -*- coding: utf-8 -*-

def func_150(val):
    passline = 90
    if val >= passline:
        print '%d pass' % val
    else:
        print 'fail'

def func_100(val): #passline 60
    passline = 60
    if val >= passline:
        print "%d pass" % val
    else:
        print 'fail'

#s设计模式 不定义2个函数
def set_passline(passline): #set_passline(60)
    def cmp(val):
        if val >=passline:
            print 'pass'
        else:
            print 'fail'
    return cmp

f_100 =set_passline(60) #函数set_passline的passline赋予60给予变量f_60
f_150 =set_passline(90)

f_100(89)#传的是val的数值，然后val和上面set_passline（passline）去比对
f_150(89)

print "######################next##############"

def my_sum(*arg):#不确定的参数
    # if len(arg) ==0:
    #     return 0 #后面操作不做了
    # for val in arg:#遍历arg
    #     if not isinstance(val,int):  #isinstance内建函数，判断一个对象的变量类型
    #         return 0
    print 'in my sum'
    return sum(arg)

def my_max(*arg):
    return max(arg)

def my_avgarg(*arg):
    return sum(arg)/len(arg)


def dec(func):#第三步 dec(my_sum)
    def in_dec(*arg):  #my_sum--》 第一步执行 处理参数
        print 'in dec arg =',arg
        if len(arg)==0:
            return 0
        for val in arg:#遍历arg集合的数值
            if not isinstance(val,int): #如果arg集合的值不是等于int类型
                return 0 #不计算后面
            #func第二步执行
        return func(*arg)#func对应函数里面包含arg 是上方的my_sum,func=my_sum
        # pass
    return in_dec
my_sum =dec(my_sum) #my_sum等于了in_dec(*arg) 第四步找个地方存起来
my_avgarg =dec(my_avgarg)

print my_avgarg(1,2,3,4,5) #平均
print my_sum(1,2,3,4,5) #求和
print my_sum(1,2,3,4,5,'6')
# print my_max(1,2,3,4,5,6) #最大
